<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Const关键字</title>
  </head>

  <body>

  </body>
  <script>
    /* 
    const关键字
      1.const 一旦声明就必须赋值，不赋值就会报错
      2.const一旦赋值就不能修改
      3.const拥有块级作用域
      4.const修改引用数据类型（对象）
        4.1 const直接修改引用类型的地址:不允许
        4.2 const修改引用类型的里面的数据:可以
      5.const修改引用数据类型（数组）
        5.1 const直接修改数组：不允许
        5.2 const修改数组里的数据：可以  
    */
    //1.const 一旦声明就必须赋值，不赋值就会报错
    //const str; //Uncaught SyntaxError: Missing initializer in const declaration

    //2.const一旦赋值就不能修改
    // const str = "hello";
    // str = "hello world";
    // console.log(str); //Uncaught TypeError: Assignment to constant variable.

    // 3.const拥有块级作用域
    // {
    //   const num = 10;
    // }
    // console.log(num); //Uncaught ReferenceError: num is not defined

    //4.const修改引用数据类型（对象）
    //4.1 const直接修改引用类型的地址:不允许
    const obj = {
      name: 'jason',
      age: 18
    }
    // obj = {
    //   genger: 'male'
    // }
    //console.log(obj); //04. const关键字.html: 75 Uncaught TypeError: Assignment to constant variable.

    //4.2 const修改引用类型的里面的数据:可以
    obj.name = "grace";
    console.log(obj); //{name:'grace',age:18}

    //5.const修改引用数据类型（数组）
    //5.1 const直接修改数组：不允许
    const arr = [1, 2, 3, 4, 5];
    // arr = [1, 1, 1];
    // console.log(arr); //Uncaught TypeError: Assignment to constant variable.

    //5.2 const修改数组里的数据：可以
    arr[0] = 10;
    console.log(arr); //[10,2,3,4,5]
  </script>

</html>